function getOpeningIds() {
    var ids = [];
    try {
        ids = JSON.parse(localStorage.openWhenComplete);
    } catch (e) {
        localStorage.openWhenComplete = JSON.stringify(ids);
    }
    return ids;
}
function setOpeningIds(ids) {
    localStorage.openWhenComplete = JSON.stringify(ids);
}
chrome.downloads.onChanged.addListener(function(delta) {
    if (!delta.state ||
        (delta.state.current != 'complete')) {
        return;
    }
    var ids = getOpeningIds();
    if (ids.indexOf(delta.id) < 0) {
        return;
    }
    chrome.downloads.open(delta.id);
    ids.splice(ids.indexOf(delta.id), 1);
    setOpeningIds(ids);
});
chrome.contextMenus.onClicked.addListener(function(info, tab) {
    chrome.downloads.download({url: info.linkUrl}, function(downloadId) {
        var ids = getOpeningIds();
        if (ids.indexOf(downloadId) >= 0) {
            return;
        }
        ids.push(downloadId);
        setOpeningIds(ids);
    });
});
chrome.contextMenus.create({
    id: 'open',
    title: chrome.i18n.getMessage('openContextMenuTitle'),
    contexts: ['link'],
});